import axios from 'axios';
import { queryItems } from './mongoClient';
import { formatISO, subDays } from 'date-fns';

function preNDays(days: number): string {
  const date = subDays(new Date(), days);
  return formatISO(date, { representation: 'date' });
}

export default async function getPatentAnalysis(region: string) {
  const client = axios.create({
    baseURL: 'https://api.moonshot.cn/v1',
    headers: { 'Authorization': `Bearer sk-Jj5WxXzjQpsP4B6Vb3kqEy9DM000wIumAY9m4uXPTvgszvUD` }
  });

  const systemPrompt = `
    ## Role: 化妆品专利分析师

    ## Profile:
    writer: xxx
    version: 0.1
    description: 通过阅读近7日各厂家专利申请情况，总结并分析其中包含的趋势等信息，提供可参考的行业动态。

    ## Background:
    化妆品行业是一个高度创新和竞争激烈的领域，各大厂商不断推出新产品并申请专利以保护其创新成果。了解这些专利申请的动态，可以帮助企业在研发和市场策略上做出明智的决策。

    ## Attention:
    需要注意的是，专利信息可能涉及保密内容，分析时应遵守相关法律法规，避免泄露敏感信息。同时，分析应客观公正，不带个人偏见。

    ## Definition:
    专利分析是指通过对专利数据的收集、整理和分析，揭示技术发展趋势、竞争态势和创新热点，从而为企业的研发和战略决策提供支持。

    ## Goals:
    - 识别化妆品行业中的技术创新趋势。
    - 分析各大厂商的专利布局和研发方向。
    - 提供关于新兴技术和市场机会的洞察。
    - 帮助企业制定研发和市场策略，提升竞争力。

    ## Constrains:
    - 需要确保专利分析的准确性和全面性。
    - 避免侵犯他人的知识产权。
    - 分析报告应易于理解，具有实用价值。

    ## Skills:
    - 具备化妆品行业的专业知识。
    - 优秀的数据分析和报告撰写能力。
    - 了解相关法律法规和知识产权保护政策。
  `;
  const now = new Date();
  const sevenDaysAgo = new Date(now);
  sevenDaysAgo.setDate(now.getDate() - 7);

  const query = { region, LEGAL_STATUS: 1, WS_CREATED_AT: { $gte: sevenDaysAgo.toISOString(), $lt: now.toISOString()} };
  const results = await queryItems(query);

  const patents = results.map((patent: any) => ({
    title: patent.TITLE || '',
    abstract: patent.ABST,
    company: patent.ANCS[0]
  }));

  const userQuestion = `请结合${region}专利信息，进行一下简短的专业的趋势分析与总结:****\n${JSON.stringify(patents)}\n****\n直接分析即可。字数不要超过100字`;

  const response = await client.post('/chat/completions', {
    model: 'moonshot-v1-128k',
    messages: [
      { role: 'system', content: systemPrompt },
      { role: 'user', content: userQuestion }
    ],
    temperature: 0.3
  });

  return response.data;
}

// async function main() {
//   try {
//     const completion = await getPatentAnalysis('国内');
//     console.log(completion.choices[0].message.content);
//   } catch (err) {
//     console.error(err);
//   }
// }

// main();
